﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BreukTrainer_EE_.Controller;

namespace BreukTrainer_EE_.View
{
    public partial class ViewOpdrachten : Form
    {
        public ViewOpdrachten()
        {
            InitializeComponent();
        }

        private void ViewOpdrachten_Load(object sender, EventArgs e)
        {
           this.opdrachtTableAdapter.Fill(this.breukTrainerDBDataSet.Opdracht);
        }

        private void opdrachtDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView data = (DataGridView)sender;
            int index = e.RowIndex;
            if (index == -1 && e.ColumnIndex == -1)//dit gebeurt als je de linkerbovenhoek van de datagridview aanklikt
            {
                opdrachtDetailTableAdapter.Fill(this.breukTrainerDBDataSet.OpdrachtDetail);
            }
            else if (index == -1)
            {
                //doe niets, dit is om exceptions te voorkomen
                return;
            }
            else
            {
                long id = (long)data.Rows[index].Cells[0].Value;
                opdrachtDetailTableAdapter.FillByOpdrachtID(this.breukTrainerDBDataSet.OpdrachtDetail, id);

            }
        }

        private void buttonNieuweOpdracht_Click(object sender, EventArgs e)
        {
            new NieuweOpdracht().Show();
            this.Dispose(false);
        }
        private void buttonStartOpdracht_Click(object sender, EventArgs e)
        {
            if (dgvOpdrachten.SelectedCells.Count > 0)
            {
                DataGridViewCell cell = dgvOpdrachten.SelectedCells[0];
                if (cell.RowIndex >= 0)
                {
                    long id = (long)dgvOpdrachten.Rows[cell.RowIndex].Cells[0].Value;//eerste cell van de rij van de geselecteerde cell vastkrijgen
                    Opdracht o = Accessor.getOpdrachtFromId(id);
                    if (Accessor.getActiveLeerlingen(o).Count() > 0)
                    {
                        this.Dispose(false);
                        new UitvoerenOpdracht(o).Show();
                    }
                    else {
                        MessageBox.Show("Alle toegewezen leerlingen hebben deze opdracht uitgevoerd", "Oefening afgerond");
                    }                    
                }
                else {
                    MessageBox.Show("Gelieve een opdracht te selecteren", "Geen opdracht geselecteerd");
                }
            }
        }

        private void buttonToonResultaat_Click(object sender, EventArgs e)
        {
            new ViewResultaat().Show();
            this.Dispose(false);
        }

        private void buttonVerwijderOpdracht_Click(object sender, EventArgs e)
        {
            if(dgvOpdrachten.SelectedCells.Count > 0)
            {
                DataGridViewCell cell = dgvOpdrachten.SelectedCells[0];
                if (cell.RowIndex >= 0)
                {
                    long id = (long)dgvOpdrachten.Rows[cell.RowIndex].Cells[0].Value;//eerste cell van de rij van de geselecteerde cell vastkrijgen
                    bool status = (bool)dgvOpdrachten.Rows[cell.RowIndex].Cells[4].Value;
                    if (status)
                    {
                        MessageBox.Show("U kunt geen opdrachten verwijderen die al uitgevoerd zijn!", "Opdracht kon niet verwijderd worden", MessageBoxButtons.OK); 
                    }
                    else
                    {
                        DialogResult result = MessageBox.Show("Bent u zeker dat u deze opdracht wilt verwijderen?", "Gebruiker confirmatie", MessageBoxButtons.YesNo);
                        if (result.Equals(DialogResult.Yes))
                        {
                            Accessor.deleteOpdracht(id);
                            opdrachtTableAdapter.Fill(this.breukTrainerDBDataSet.Opdracht);
                        }
                    }
                }
            }
        }
    }
}
